/*
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is ST_EXT-S_UIMAST.
 *
 * The Initial Developer of the Original Code is
 * University of Rome, Tor Vergata
 * Portions created by the Initial Developer are Copyright (C) 2009
 * the Initial Developer. All Rights Reserved.
 */

package it.uniroma2.art.uimast.impl;

import java.util.Iterator;

import it.uniroma2.art.ontapi.ARTResource;
import it.uniroma2.art.uimast.xpts.Variant;

/**
 * Manages a wired property which will be fetched from the {@code ExportModeProvider}
 * 
 * @author <a href="mailto:manuel.fiorelli@gmail.com">Manuel Fiorelli</a>
 */
public class WiredPropertySource extends PropertyDataSource {

	/**
	 * Constructs a <code>WiredPropertySource</code> object.
	 * 
	 * @param v
	 *            the prototype variant (of the appropriate concrete class)
	 * @param property
	 *            the property resource
	 * @param classProjection
	 *            the class projection which owns this object
	 * @throws Exception
	 */
	public WiredPropertySource(Variant v, ARTResource property, ClassProjection classProjection)
			throws Exception {
		super(v, null, property);
		
		this.classProjection = classProjection;
	}
	
	@Override
	public Iterator<Variant> apply(ARTResource domainObject, ARTResource annot) {
		return classProjection.getExportModeProvider().getWiredProperty(property, v);
	}
	
	/**
	 * The class projection containing this data source
	 */
	private ClassProjection classProjection;
}
